package br.com.controller.aula;

import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;

import br.com.arquitetura.controlador.AbstractMBean;
import br.com.arquitetura.servico.ServiceCadastro;
import br.com.data.hibernate.DesempenhoHibernateDAO;
import br.com.model.entidade.Avaliacao;
import br.com.model.entidade.Desempenho;

@ManagedBean
@SessionScoped
public class MBEditarDesempenho extends AbstractMBean<Desempenho> {
	private static final long serialVersionUID = 1L;
	private Avaliacao avaliacao;
	
	private DesempenhoHibernateDAO desempenhoHibernateDAO;
	
	private List<Desempenho> desempenhos;
	
	@ManagedProperty(value="#{serviceCadastro}")
	private ServiceCadastro serviceCadastro;
	
	public void setServiceCadastro(ServiceCadastro serviceCadastro) {
		this.serviceCadastro = serviceCadastro;
	}
	
	public MBEditarDesempenho() {
		
		this.desempenhoHibernateDAO = (DesempenhoHibernateDAO) getBean("desempenhoHibernateDAO");
		
		this.desempenhos = new ArrayList<Desempenho>();

	}
	
	public void editarDesempenho(){
		for (Desempenho d : desempenhos) {

			//Realizar a verificacao do semestre corrente
			//inserir o desempenho na lista de notas do semstre vigente
			
			serviceCadastro.atualizar(d);
		}
		
		addFacesInformationMessage("Notas atualizadas com sucesso");
	}

	public Avaliacao getAvaliacao() {
		return avaliacao;
	}

	public void setAvaliacao(Avaliacao avaliacao) {
		this.avaliacao = avaliacao;
		
		this.desempenhos = this.desempenhoHibernateDAO.getByField(Desempenho.class, "avaliacao", this.avaliacao);
		
	}

	public List<Desempenho> getDesempenhos() {
		return desempenhos;
	}

	public void setDesempenhos(List<Desempenho> desempenhos) {
		this.desempenhos = desempenhos;
	}
	
	
}
